package echoserver

import (
	"io"
	"log"
	"net"
)

func Run() {
	// 监听本地 8000 端口的 TCP 连接
	listener, err := net.Listen("tcp", "localhost:8000")
	if err != nil {
		log.Fatal(err)
	}
	log.Println("Server is listening on port 8000")

	// 循环接受客户端连接
	for {
		conn, err := listener.Accept()
		if err != nil {
			log.Print(err)
			continue
		}
		// 为每个客户端连接启动一个 goroutine 处理
		go handleConn(conn)
	}
}

// 处理客户端连接
func handleConn(c net.Conn) {
	// 确保连接在函数结束时关闭
	defer c.Close()

	// 将客户端发送的数据原样返回给客户端
	io.Copy(c, c)
}
